#ifndef effect_basic_h__
#define effect_basic_h__
#include <graphics/ieffect.h>
#include <graphics/irenderer.h>

namespace gecko
{

// A basic effect which supports textures and lighting
class Effect_Basic : public IEffect
{
public:
	// constructor
	Effect_Basic(IRenderer* renderer);

	// Set shader params based on render context
	void SetupFromRenderContext(const RenderContext& renderContext);

	// enable alpha blending
	void EnableAlpha(bool enable);

	// set the source alpha
	void SetSrcAlpha(IRenderer::eBlendMode blendMode);

	// set the destination alpha
	void SetDestAlpha(IRenderer::eBlendMode blendMode);

private:
	enum ParamHandle
	{
		PH_WVP,
		PH_ALPHA_ENABLED,
		PH_SRCALPHA,
		PH_DESTALPHA,
		PH_NUM	// reserved
	};
};

}// namespace gecko

#endif // ieffect_h__